import com.wn.domain.Person;
import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;

/**
 * @author yellow Docter
 * @date 2022 -10-28
 * @desc
 *  流的中间操作:
 *   方法         					描述
     * filter(Predicate p)	 接收 Lambda ， 从流中排除某些元素。
     *
     * distinct()     				筛选，通过流所生成元素的 hashCode() 和 equals() 去除重复元素
     *
     * limit(long maxSize)   截断流，使其元素不超过给定数量。
     *
     * skip(long n)    			跳过元素，返回一个扔掉了前 n 个元素的流。若流中元素不足 n 个，则返回一个空流。与 limit(n) 互补
 */
public class Demo02 {

    List<Person> persons = Arrays.asList(
            new Person("马云", 48, 2000d),
            new Person("马化腾", 50, 3000d),
            new Person("雷军", 46, 4000d),
            new Person("刘强东", 47, 5000d),
            new Person("张朝阳", 50, 6000d),
            new Person("张朝阳", 50, 6000d),
            new Person("张一鸣", 50, 7000d),
            new Person("张一鸣", 50, 7000d)
    );

    //
    @Test
    public void demo01(){

        //过滤 大于 5000的人
//        persons.stream().filter(p->p.getSalary() > 5000d).forEach(p-> System.out.println(p));

        //去重复
        persons.stream()
                .distinct()
                .skip(2)
                .limit(2)
                .forEach(p-> System.out.println(p));

    }

}
